package 字符串.字符串中最大整数;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Optional;

/**
 * @author: wh(1835734390 @ qq.com)
 * @date: 2023/5/5 17:13
 * @description:找出字符串中的最大正整数的下标
 * @version:
 */
public class Solution {
    public static void main(String[] args) {
        String str = "er23**34df f2#99";
        System.out.println(count2(str));
    }

    public static int count2(String str) {
        str = str.trim();
        int start = 0;
        int maxNum = 0;
        int res = 0;
        for (int i = 0; i < str.length(); i++) {
            if (Character.isDigit(str.charAt(i))) {
                start = i;
                //这里不能考虑str.length - 1 。字符串截取不会包含终止位
                while (i < str.length() && Character.isDigit(str.charAt(i))) {
                    i++;
                }
                String substring = str.substring(start, i);
                Integer tmpNum = Integer.valueOf(substring);
                if (maxNum < tmpNum) {
                    maxNum = tmpNum;
                    res = start;
                }
            }
        }
        return res;
    }

/*     #include<stdio.h>
#include<string.h>
        *//*写一个函数，输入一行字符，将此字符串中最长的数字输出*//*
    main(){
        int flag=0,count=0,maxLength=0,index=0;    //count用来计数当前数字长度，index是最长数字的下标位置。
        int i,j;
        char words[100],ch;
        gets(words);
        for(i=0;i<strlen(words)+1;i++){
            if('0'<=ch&&ch<='9'){
                flag=1;    //如果是数字则标记flag=1,且单词计数+1
                count++;
            }else if(flag==1){    //当不是数字，且前一个为数字的时候才开始判断是否最长数字。
                if(count>maxLength){
                    index=i-count;    //计算最长数字的下标位置
                    maxLength=count;
                }
                flag=0;
                count=0;
            }
        }
        if(maxLength==0)
            printf("none");
        else for(j=index;j<index+maxLength;j++){
            printf("%c",words[j]);
        }
    }*/
}
